#include "QScrollAreaTestPross.h"  // 引入自定义的窗口头文件
#include <QApplication>            // QApplication 提供 Qt 应用程序的控制管理
#include <QLabel>                  // QLabel 用于显示文本或图像
#include <QScrollArea>            // QScrollArea 提供带滚动条的区域，可显示超出视图的内容
#include <QGridLayout>            // QGridLayout 提供栅格布局管理器

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);   // 创建 QApplication 对象，管理程序的控制流程和资源
    QScrollAreaTestPross w;       // 创建自定义窗口类的对象
    w.resize(300,200);            // 设置窗口初始大小为 300x200
    /*
     * QScrollArea 当中有很多功能继承自 QAbstractScrollArea。
     * 滚动条外观是否美观取决于滚动条策略（ScrollBarPolicy）设置，
     * 可以参考 Qt 官方文档了解滚动区域的更多自定义设置。
     */
    QLabel *qljpg = new QLabel;         // 创建 QLabel 对象用于显示图像
    qljpg->setScaledContents(true);     // 设置图像自动缩放以适应 QLabel 大小
    QImage imagejpg(":/imagesbiji/789.jpg");        // 加载资源文件中的图像
    qljpg->setPixmap(QPixmap::fromImage(imagejpg)); // 将 QImage 转换为 QPixmap 并设置为 QLabel 显示内容
    QScrollArea *sArea = new QScrollArea; // 创建 QScrollArea 滚动区域
    sArea->setAlignment(Qt::AlignCenter); // 设置内容在滚动区域中居中显示
    // sArea->setWidgetResizable(true);  // （注释掉）启用后滚动区域会随着窗口变化自动调整内容大小
    sArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // 水平滚动条始终可见
    sArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  // 垂直滚动条始终隐藏
    sArea->setWidget(qljpg);           // 设置 QLabel 为滚动区域中的显示内容
    QGridLayout *glayout = new QGridLayout; // 创建一个网格布局管理器
    glayout->addWidget(sArea);              // 将滚动区域添加到布局中
    w.setLayout(glayout);        // 设置主窗口的布局为刚创建的网格布局
    w.show();                    // 显示主窗口
    return a.exec();             // 进入主事件循环，等待用户交互
}
